﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class РегламентноеФормированиеДокументов
	{
		// Для расширения способов заполнения необходимо:
		//	- создать новый объект метаданных "справочник"
		//		обязательные реквизиты:
		//			ГраницаОбработки
		//			ФормироватьДокументыАвтоматически
		//			РегламентноеЗадание
		//	- добавить обработку нового способа заполнения в функции модуля
		//    ПолучитьДатуОкончанияПериодаФормированияДокументов()
		//    СформироватьДокументы()
		//    ПолучитьМассивДокументовДляПроведения()
		//    ПолучитьМассивДокументовДляУдаления()
		//    УдалятьИПроводитьДокументыВТранзакции()
		//  - добавить новый справочник в состав типов реквизита Настройка
		//    обработки ФормированиеДокументовПоДаннымОперативногоУчетаПроизводства
		////////////////////////////////////////////////////////////////////////////////
		// РЕГЛАМЕНТ ФОРМИРОВАНИЯ ДОКУМЕНТОВ ВЫПУСКА
		// Возвращает список видов регулярных документов, которые могут формироваться регламентом
		//

		public object РегламентФормированияДокументовВыпуска_СписокВидовРегулярныхДокументов(/**/)
		{
			//ВозможныеВидыДокументов = Новый Массив();
			//ВозможныеВидыДокументов.Добавить("ВыпускПродукции");
			//ВозможныеВидыДокументов.Добавить("ОтчетПроизводстваЗаСмену");
			//СписокВидов = Новый СписокЗначений();
			return null;
		}
		// Возвращает булево: могут ли быть заполнены материалы в документе

		public object РегламентФормированияДокументовВыпуска_ЗаполнятьМатериалы(/*ВидДокумента*/)
		{
			//Возврат ВидДокумента = "ОтчетПроизводстваЗаСмену";
			return null;
		}
		// Функция, производящая непосредственное формирование документов.
		//
		// Параметры
		//  Настройка     - ссылка на настройку
		//	ДатаНачала	  - дата начала выборки документов;
		//	ДатаОкончания - дата окончания выборки документов;
		//  Ошибка        - в параметр будет возвращен текст ошибки (если формирование документов завершится с ошибкой)
		//	СформированныеДокументы	- в параметр будет возвращен массив сформированных документов;
		//	УчтенныеДокументы		- в параметр будет возвращен массив учтенных документов (т.е. тех, по данным которых сформированы документы).
		//
		// Возвращаемое значение
		//  Истина - сформировано без ошибок
		//  Ложь   - при формировании документов произошли ошибки
		//

		public object РегламентФормированияДокументовВыпуска_СформироватьДокументы(/*Настройка, ДатаНачала, ДатаОкончания, 
	    Ошибка = "", СформированныеДокументы = Неопределено, УчтенныеДокументы = Неопределено*/)
		{
			/*// На основании указанных в настройке параметров будут созданы документы 
*/
			/*// "ОтчетПроизводстваЗаСмену"
*/
			/*// или
*/
			/*// "ВыпускПродукции"
*/
			/*// Проверим, что по указанному подразделению смены завершены.
*/
			if(true/*Настройка.НеОбрабатыватьПериодДоЗавершенияСмен*/)
			{
				//УстановитьПривилегированныйРежим(Истина);
				//ДанныеСмены = РегистрыСведений.ЗавершенныеСмены.Получить(Новый Структура("Подразделение", Настройка.Подразделение));
				//УстановитьПривилегированныйРежим(Ложь);
				if(true/*ДанныеСмены.ГраницаСмены = '0001-01-01'*/)
				{
					//Ошибка = Ошибка + "Для формирования документов должны быть завершены смены по " + Формат(ДатаОкончания, "ДЛФ=D");
				}
				/*// Определим дату и время конца смены, которая завершена
*/
				//КонецСмены = ОперативныйУчетПроизводства.ДатаВремяОкончанияСмены(ДанныеСмены.ГраницаСмены, ДанныеСмены.Смена);
				if(true/*КонецСмены < КонецДня(ДатаОкончания)*/)
				{
					//Ошибка = Ошибка + "Для формирования документов должны быть завершены смены по " + Формат(ДатаОкончания, "ДЛФ=D");
				}
			}
			//СформированныеДокументы	=	Новый Массив;
			//УчтенныеДокументы		=	Новый Массив;
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
			/*//используется для всех запросов функции
*/
			/*//Получим перечень документов для обработки в соответствии с фильтрами
*/
			//Запрос = Новый Запрос();
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*//Определим аргумент функции КонецПериода в зависимости от периодичности
*/
			//ОписаниеПериодаДетализации = Строка(Настройка.ПериодДетализации);
			/*// Состав ключа запроса (выбираемый в третьем запросе) также дублируется 
*/
			/*//	- в условии запросов, выбирающих данные ТЧ документов;
*/
			/*//	- в объявлении структуры КлючДокумента
*/
			/*//	Порядок запросов в пакете важен, так как потом выполняем его методом ВыполнитьПакет()
*/
			/*Запрос.Текст = 
	"ВЫБРАТЬ
	|	ОтчетМастераСмены.Ссылка КАК Ссылка,
	|	ОтчетМастераСмены.Подразделение КАК Подразделение,
	|	НАЧАЛОПЕРИОДА(ВЫБОР
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетМастераСмены.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
	|				ТОГДА &ГраницаОкончания
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетМастераСмены.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ОтчетМастераСмены.Дата, МЕСЯЦ)
	|				ТОГДА КОНЕЦПЕРИОДА(ОтчетМастераСмены.Дата, МЕСЯЦ)
	|			ИНАЧЕ КОНЕЦПЕРИОДА(ОтчетМастераСмены.Дата, "+ОписаниеПериодаДетализации+")
	|		КОНЕЦ, ДЕНЬ) КАК Дата,
	|	ОтчетМастераСмены.ГраницаСмены КАК ГраницаСмены
	|ПОМЕСТИТЬ ДокументыИсточники
	|ИЗ
	|	Документ.ОтчетМастераСмены КАК ОтчетМастераСмены
	|ГДЕ
	|	ОтчетМастераСмены.Дата МЕЖДУ &ГраницаНачала И &ГраницаОкончания
	|	И ОтчетМастераСмены.Проведен
	|	И (ОтчетМастераСмены.Подразделение = &Подразделение ИЛИ &Подразделение=Значение(Справочник.Подразделения.ПустаяСсылка))
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка,
	|	Дата
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДокументыИсточники.Ссылка 		КАК Документ,
	|	ДокументыИсточники.ГраницаСмены КАК ГраницаСмены
	|ИЗ
	|	ДокументыИсточники КАК ДокументыИсточники
	|УПОРЯДОЧИТЬ ПО ГраницаСмены
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДокументыИсточники.Дата КАК Дата,
	|	ДокументыИсточники.Подразделение
	|ИЗ
	|	ДокументыИсточники КАК ДокументыИсточники
	|УПОРЯДОЧИТЬ ПО Дата
	|;";*/
			/*//Значения отбора возьмем из шапки документа
*/
			//Отбор = Новый Структура("Ссылка, Подразделение");
			//ЗаполнитьЗначенияСвойств(Отбор, Настройка);
			//ЗаполнитьЗначенияПараметровЗапроса(Запрос, Отбор);
			/*//Период берется из параметров
*/
			//Запрос.УстановитьПараметр("ГраницаНачала", 		ДатаНачала);
			//Запрос.УстановитьПараметр("ГраницаОкончания", 	КонецДня(ДатаОкончания));
			/*//Второй запрос пакета содержит выборку документов-источников заполнения
*/
			/*//Запоминаем документы, на основании которых проводим заполнение.
*/
			//УчтенныеДокументы = РезультатыЗапросов[1].Выгрузить().ВыгрузитьКолонку("Документ");
			/*//Третий запрос пакета содержит выборку по ключевым полям создаваемых документов
*/
			//ВыборкаКлючейДокументов = РезультатыЗапросов[2].Выбрать();
			/*//Подготовим запросы для получения данных 
*/
			/*// о выпуске
*/
			/*// о расходе материалов.
*/
			//ЗапросВыпуск = Новый Запрос();
			//ЗапросВыпуск.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*ЗапросВыпуск.Текст = 
	"ВЫБРАТЬ
	|	ОтчетМастераСменыВыпуск.Номенклатура КАК Номенклатура,
	|	ОтчетМастераСменыВыпуск.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ОтчетМастераСменыВыпуск.СерияНоменклатуры КАК СерияНоменклатуры,
	|	ОтчетМастераСменыВыпуск.Спецификация КАК Спецификация,
	|	СУММА(ОтчетМастераСменыВыпуск.Количество * ОтчетМастераСменыВыпуск.Коэффициент / ОтчетМастераСменыВыпуск.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Количество
	|ПОМЕСТИТЬ ДанныеВыпуска
	|ИЗ
	|	Документ.ОтчетМастераСмены.Выпуск КАК ОтчетМастераСменыВыпуск
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
	|		ПО ОтчетМастераСменыВыпуск.Ссылка = ДокументыИсточники.Ссылка
	|ГДЕ
	|	ДокументыИсточники.Дата = &Дата
	|	И ДокументыИсточники.Подразделение = &Подразделение
	|	И (НЕ ОтчетМастераСменыВыпуск.Номенклатура.Услуга)
	|
	|СГРУППИРОВАТЬ ПО
	|	ОтчетМастераСменыВыпуск.Номенклатура,
	|	ОтчетМастераСменыВыпуск.ХарактеристикаНоменклатуры,
	|	ОтчетМастераСменыВыпуск.СерияНоменклатуры,
	|	ОтчетМастераСменыВыпуск.Спецификация
	|
	|ИМЕЮЩИЕ
	|	СУММА(ОтчетМастераСменыВыпуск.Количество * ОтчетМастераСменыВыпуск.Коэффициент / ОтчетМастераСменыВыпуск.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) > 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Номенклатура,
	|	ХарактеристикаНоменклатуры,
	|	СерияНоменклатуры,
	|	Спецификация
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеВыпуска.Номенклатура,
	|	ДанныеВыпуска.ХарактеристикаНоменклатуры,
	|	ДанныеВыпуска.СерияНоменклатуры,
	|	ДанныеВыпуска.Спецификация,
	|	ДанныеВыпуска.Количество,
	|	ДанныеВыпуска.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
	|	ДанныеВыпуска.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
	|	ДанныеВыпуска.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
	|	ЗНАЧЕНИЕ(Справочник.Качество.Новый) КАК Качество,
	|	1 КАК ДоляСтоимости,
	|	ДанныеВыпуска.Номенклатура.Представление,
	|	ДанныеВыпуска.ХарактеристикаНоменклатуры.Представление,
	|	ДанныеВыпуска.СерияНоменклатуры.Представление,
	|	ДанныеВыпуска.Спецификация.Представление
	|ИЗ
	|	ДанныеВыпуска КАК ДанныеВыпуска
	|АВТОУПОРЯДОЧИВАНИЕ";*/
			/*//документа
*/
			/*//	Порядок запросов важен, так как запрос выполняется методом ВыполнитьПакет();
*/
			/*//  Первый запрос 		[0] получит данные расхода материалов и поместит во временную таблицу;
*/
			/*//  Второй запрос 		[1] нужен для того, чтобы отсечь расход материалов, для которых не указано точно, куда они пошли.
*/
			/*//		В данном случае ограничиваем только материалами, аналитика распределения которых совпадает с выпуском 
*/
			/*//		с точностью до продукции и характеристики.
*/
			/*//	Третий запрос 		[2] получает данные о сводном расходе распределенных материалов (для заполнения закладки "Материалы".
*/
			/*//	Четвертый запрос 	[3] получает данные о детальном расходе материалов (для заполнения РаспределениеМатериалов).
*/
			//ЗапросМатериалы = Новый Запрос();
			//ЗапросМатериалы.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*ЗапросМатериалы.Текст = 
	"ВЫБРАТЬ
	|	ОтчетМастераСменыРасходМатериалов.Номенклатура,
	|	ОтчетМастераСменыРасходМатериалов.ХарактеристикаНоменклатуры,
	|	ОтчетМастераСменыРасходМатериалов.СерияНоменклатуры,
	|	ОтчетМастераСменыРасходМатериалов.Спецификация КАК Спецификация,
	|	СУММА(ОтчетМастераСменыРасходМатериалов.Количество * ОтчетМастераСменыРасходМатериалов.Коэффициент / ОтчетМастераСменыРасходМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Количество,
	|	ОтчетМастераСменыРасходМатериалов.Продукция КАК Продукция,
	|	ОтчетМастераСменыРасходМатериалов.ХарактеристикаПродукции КАК ХарактеристикаПродукции,
	|	ОтчетМастераСменыРасходМатериалов.СерияПродукции КАК СерияПродукции,
	|	ОтчетМастераСменыРасходМатериалов.Номенклатура.СтатьяЗатрат КАК СтатьяЗатрат
	|ПОМЕСТИТЬ ДанныеРасходаМатериалов
	|ИЗ
	|	Документ.ОтчетМастераСмены.РасходМатериалов КАК ОтчетМастераСменыРасходМатериалов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
	|		ПО ОтчетМастераСменыРасходМатериалов.Ссылка = ДокументыИсточники.Ссылка
	|ГДЕ
	|	ДокументыИсточники.Дата = &Дата
	|	И ДокументыИсточники.Подразделение = &Подразделение
	|	И (НЕ ОтчетМастераСменыРасходМатериалов.Номенклатура.Услуга)
	|
	|СГРУППИРОВАТЬ ПО
	|	ОтчетМастераСменыРасходМатериалов.Номенклатура,
	|	ОтчетМастераСменыРасходМатериалов.ХарактеристикаНоменклатуры,
	|	ОтчетМастераСменыРасходМатериалов.СерияНоменклатуры,
	|	ОтчетМастераСменыРасходМатериалов.Спецификация,
	|	ОтчетМастераСменыРасходМатериалов.Продукция,
	|	ОтчетМастераСменыРасходМатериалов.ХарактеристикаПродукции,
	|	ОтчетМастераСменыРасходМатериалов.СерияПродукции,
	|	ОтчетМастераСменыРасходМатериалов.Номенклатура.СтатьяЗатрат
	|
	|ИМЕЮЩИЕ
	|	СУММА(ОтчетМастераСменыРасходМатериалов.Количество * ОтчетМастераСменыРасходМатериалов.Коэффициент / ОтчетМастераСменыРасходМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) > 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Продукция,
	|	ХарактеристикаПродукции,
	|	СерияПродукции,
	|	Спецификация
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеРасходаМатериалов.Номенклатура,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры,
	|	ДанныеРасходаМатериалов.СерияНоменклатуры,
	|	ДанныеРасходаМатериалов.Спецификация,
	|	СУММА(ДанныеРасходаМатериалов.Количество) КАК Количество,
	|	ДанныеРасходаМатериалов.Продукция,
	|	ДанныеРасходаМатериалов.ХарактеристикаПродукции,
	|	ДанныеРасходаМатериалов.СерияПродукции,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
	|	ДанныеРасходаМатериалов.Продукция.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа
	|ПОМЕСТИТЬ ДанныеРаспределенияМатериалов
	|ИЗ
	|	ДанныеРасходаМатериалов КАК ДанныеРасходаМатериалов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
	|			ДанныеВыпуска.Номенклатура КАК Номенклатура,
	|			ДанныеВыпуска.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
	|		ИЗ
	|			ДанныеВыпуска КАК ДанныеВыпуска) КАК СвернутыеДанныеВыпуска
	|		ПО ДанныеРасходаМатериалов.Продукция = СвернутыеДанныеВыпуска.Номенклатура
	|			И ДанныеРасходаМатериалов.ХарактеристикаПродукции = СвернутыеДанныеВыпуска.ХарактеристикаНоменклатуры
	|
	|СГРУППИРОВАТЬ ПО
	|	ДанныеРасходаМатериалов.СерияНоменклатуры,
	|	ДанныеРасходаМатериалов.Продукция,
	|	ДанныеРасходаМатериалов.Номенклатура,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры,
	|	ДанныеРасходаМатериалов.СерияПродукции,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат,
	|	ДанныеРасходаМатериалов.ХарактеристикаПродукции,
	|	ДанныеРасходаМатериалов.Спецификация,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
	|	ДанныеРасходаМатериалов.Продукция.НоменклатурнаяГруппа
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеРасходаМатериалов.Номенклатура,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры,
	|	ДанныеРасходаМатериалов.СерияНоменклатуры,
	|	СУММА(ДанныеРасходаМатериалов.Количество) КАК Количество,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
	|	ДанныеРасходаМатериалов.Номенклатура.Представление КАК НоменклатураПредставление,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
	|	ДанныеРасходаМатериалов.СерияНоменклатуры.Представление КАК СерияНоменклатурыПредставление,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат.Представление КАК СтатьяЗатратПредставление
	|ИЗ
	|	ДанныеРасходаМатериалов КАК ДанныеРасходаМатериалов
	|
	|СГРУППИРОВАТЬ ПО
	|	ДанныеРасходаМатериалов.Номенклатура,
	|	ДанныеРасходаМатериалов.СерияНоменклатуры,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков,
	|	ДанныеРасходаМатериалов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
	|	ДанныеРасходаМатериалов.Номенклатура.Представление,
	|	ДанныеРасходаМатериалов.ХарактеристикаНоменклатуры.Представление,
	|	ДанныеРасходаМатериалов.СерияНоменклатуры.Представление,
	|	ДанныеРасходаМатериалов.СтатьяЗатрат.Представление
	|АВТОУПОРЯДОЧИВАНИЕ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДанныеРаспределенияМатериалов.Номенклатура КАК Номенклатура,
	|	ДанныеРаспределенияМатериалов.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ДанныеРаспределенияМатериалов.СерияНоменклатуры КАК СерияНоменклатуры,
	|	ДанныеРаспределенияМатериалов.Спецификация КАК Спецификация,
	|	ДанныеРаспределенияМатериалов.Количество,
	|	ДанныеРаспределенияМатериалов.Продукция КАК Продукция,
	|	ДанныеРаспределенияМатериалов.ХарактеристикаПродукции КАК ХарактеристикаПродукции,
	|	ДанныеРаспределенияМатериалов.СерияПродукции КАК СерияПродукции,
	|	ДанныеРаспределенияМатериалов.СтатьяЗатрат,
	|	ДанныеРаспределенияМатериалов.ЕдиницаИзмерения,
	|	ДанныеРаспределенияМатериалов.Коэффициент,
	|	ДанныеРаспределенияМатериалов.НоменклатурнаяГруппа,
	|	ДанныеРаспределенияМатериалов.Номенклатура.Представление КАК НоменклатураПредставление,
	|	ДанныеРаспределенияМатериалов.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
	|	ДанныеРаспределенияМатериалов.СерияНоменклатуры.Представление КАК СерияНоменклатурыПредставление,
	|	ДанныеРаспределенияМатериалов.Спецификация.Представление КАК СпецификацияПредставление,
	|	ДанныеРаспределенияМатериалов.Продукция.Представление КАК ПродукцияПредставление,
	|	ДанныеРаспределенияМатериалов.ХарактеристикаПродукции.Представление КАК ХарактеристикаПродукцииПредставление,
	|	ДанныеРаспределенияМатериалов.СерияПродукции.Представление КАК СерияПродукцииПредставление,
	|	ДанныеРаспределенияМатериалов.СтатьяЗатрат.Представление КАК СтатьяЗатратПредставление,
	|	ДанныеРаспределенияМатериалов.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
	|	ДанныеРаспределенияМатериалов.НоменклатурнаяГруппа.Представление КАК НоменклатурнаяГруппаПредставление
	|ИЗ
	|	ДанныеРаспределенияМатериалов КАК ДанныеРаспределенияМатериалов
	|
	|УПОРЯДОЧИТЬ ПО
	|	Номенклатура,
	|	ХарактеристикаНоменклатуры,
	|	СерияНоменклатуры,
	|	Продукция,
	|	ХарактеристикаПродукции,
	|	СерияПродукции,
	|	Спецификация
	|АВТОУПОРЯДОЧИВАНИЕ";*/
			/*//Запросы удаления временных таблиц.
*/
			/*//Таблицы удаляем принудительно, так как они создаются в цикле
*/
			//ЗапросУдалитьВыпуск = Новый Запрос("УНИЧТОЖИТЬ ДанныеВыпуска");
			//ЗапросУдалитьВыпуск.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//ЗапросУдалитьМатериалы = Новый Запрос("УНИЧТОЖИТЬ ДанныеРасходаМатериалов; УНИЧТОЖИТЬ ДанныеРаспределенияМатериалов");
			//ЗапросУдалитьМатериалы.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*//Если документов больше двух, то покажем индикатор процесса
*/
			if(true/*ВыборкаКлючейДокументов.Количество()>2*/)
			{
				//ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
				//ФормаИндикатора.МаксимальноеЗначение		= ВыборкаКлючейДокументов.Количество();
				//ФормаИндикатора.КомментарийОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.НаименованиеОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.Открыть();
			}
			/*// ОСОБЕННОСТИ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ РАЗНЫХ ВИДОВ
*/
			/*ОтразитьМатериалы  = 
		РегламентФормированияДокументовВыпуска_ЗаполнятьМатериалы(Настройка.ВидРегулярногоДокумента)
		И Настройка.ОтразитьМатериалы;*/
			if(true/*Настройка.ВидРегулярногоДокумента = "ОтчетПроизводстваЗаСмену"*/)
			{
				//ТабличныеЧастиСоСчетами = Новый Структура("Продукция,РаспределениеМатериалов");
				//ЕстьСчетаВШапке         = Ложь;
			}
			/*//Получим не зависящие от результатов запросов данные
*/
			/*ОсновнойОтветственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(
		глЗначениеПеременной("глТекущийПользователь"), 
		"ОсновнойОтветственный");*/
			//КонстантыДляЗаполнения = Новый Структура();
			//КонстантыДляЗаполнения.Вставить("Ответственный",                ОсновнойОтветственный);
			//КонстантыДляЗаполнения.Вставить("ВводитьСтатьиЗатратПоСтрокам", Истина);
			//КонстантыДляЗаполнения.Вставить("ИспользоватьМатериалы",        ОтразитьМатериалы);
			//КонстантыДляЗаполнения.Вставить("Комментарий",                  "Заполнено данными по отчетам мастера смены");
			while(true/*ВыборкаКлючейДокументов.Следующий()*/)
			{
				/*//Получим исходные данные для заполнения документа.
*/
				/*//Параметрами запросов будут значения ключа формируемого документа.
*/
				//КлючДокумента = Новый Структура("Дата,Подразделение");
				//ЗаполнитьЗначенияСвойств(КлючДокумента, ВыборкаКлючейДокументов);
				/*//Запрос по выпуску отражаем всегда, так как он нужен и для заполнения материалов тоже (формирует временную таблицу, используемую в запросе материалов)
*/
				//ЗаполнитьЗначенияПараметровЗапроса(ЗапросВыпуск, 	КлючДокумента);
				//ДанныеВыпуск 					= ЗапросВыпуск.Выполнить();
				if(true/*ОтразитьМатериалы*/)
				{
					//ЗаполнитьЗначенияПараметровЗапроса(ЗапросМатериалы, КлючДокумента);
					//МассивРезультатов 				= ЗапросМатериалы.ВыполнитьПакет();
					//ДанныеРаспределениеМатериалов	= МассивРезультатов[3];
					//ДанныеМатериалы					= МассивРезультатов[2];
				}
				/*//Удаляем временные таблицы
*/
				//ЗапросУдалитьВыпуск.Выполнить();
				if(true/*ОтразитьМатериалы*/)
				{
					//ЗапросУдалитьМатериалы.Выполнить();
				}
				/*// СОЗДАЕМ ДОКУМЕНТ И ЗАПОЛНЯЕМ ЕГО
*/
				//НовыйДокумент = Документы[Настройка.ВидРегулярногоДокумента].СоздатьДокумент();
				/*//Заполняем документ данными запросов и общих реквизитов (т.е. данными подсистемы Оперативного учета производства)
*/
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, Настройка, "Организация,ПодразделениеОрганизации,Склад,ОтражатьВУправленческомУчете,ОтражатьВБухгалтерскомУчете,ОтражатьВНалоговомУчете");
				if(true/*Настройка.ОтразитьВыпуск*/)
				{
					//НовыйДокумент.Продукция.Загрузить(ДанныеВыпуск.Выгрузить());
				}
				if(true/*ОтразитьМатериалы*/)
				{
					//НовыйДокумент.Материалы.Загрузить(ДанныеМатериалы.Выгрузить());
					//НовыйДокумент.РаспределениеМатериалов.Загрузить(ДанныеРаспределениеМатериалов.Выгрузить());
				}
				/*//Дозаполняем документ данными ключа
*/
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, КлючДокумента);
				/*//Дозаполняем документ константами
*/
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, КонстантыДляЗаполнения);
				/*//Дозаполняем документ внешними по отношению к подсистеме данными
*/
				if(true/*НовыйДокумент.ОтражатьВБухгалтерскомУчете*/)
				{
					/*//подразделение организации (может быть задано Настройкой)
*/
					if(true/*НовыйДокумент.ПодразделениеОрганизации.Пустая()*/)
					{
						//НовыйДокумент.ПодразделениеОрганизации = УправлениеЗатратами.ПолучитьПодразделениеОрганизации(НовыйДокумент.Организация, НовыйДокумент.Подразделение, Истина);
					}
					/*// счета учета затрат в шапке документа
*/
					if(true/*ЕстьСчетаВШапке*/)
					{
						//НовыйДокумент.ЗаполнитьСчетаУчетаВШапке();
					}
					/*// счета учета номенклатуры
*/
				}
				/*//Сохраняем документ
*/
				//Сообщение = "Ошибка при записи документа " + НовыйДокумент.Метаданные().Синоним + ": ";
				/*//Запоминаем созданный документ
*/
				//СформированныеДокументы.Добавить(НовыйДокумент.Ссылка);
				/*//При необходимости этими же данными можем заполнить и документы другого вида
*/
				/*//Обновим индикатор выполнения
*/
				if(true/*ФормаИндикатора <> Неопределено*/)
				{
					//ФормаИндикатора.КомментарийЗначения = "" + НовыйДокумент.Ссылка;
					//ФормаИндикатора.Значение 			= ФормаИндикатора.Значение + 1;
					//ОбработкаПрерыванияПользователя();
				}
			}
			if(true/*ФормаИндикатора <> Неопределено*/)
			{
				//ФормаИндикатора.Закрыть();
			}
			return null;
		}
		//Возвращает массив документов, входящих в переданный массив сформированных по данному настройке
		//документов (ПроверяемыеДокументы), которые требуют проведения в соответствии с логикой
		//отражения операций по данной настройке .

		public object РегламентФормированияДокументовВыпуска_ПолучитьМассивДокументовДляПроведения(/*Настройка, ПроверяемыеДокументы*/)
		{
			/*//Все документы, сформированные в рамках данного регламента требуют проведения
*/
			return null;
		}
		//Возвращает массив документов, входящих в переданный массив учтенных данным регламентом
		//документов (ПроверяемыеДокументы), которые требуют удаления в соответствии с логикой
		//отражения операций по данному настройке.

		public object РегламентФормированияДокументовВыпуска_ПолучитьМассивДокументовДляУдаления(/*Настройка, ПроверяемыеДокументы*/)
		{
			if(true/*Настройка.ВидРегулярногоДокумента = "ОтчетПроизводстваЗаСмену" 
		И Настройка.ОтразитьМатериалы
		И Настройка.ОтражатьВУправленческомУчете*/)
			{
				/*// Документы, на основании которых формируются ОПЗС, отражающие выпуск в Упр. учете, 
*/
				/*// подлежат удалению для формирования корректных движений по регистру МатериалыВПроизводстве
*/
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// РЕГЛАМЕНТ ФОРМИРОВАНИЯ ДОКУМЕНТОВ ПО ОРДЕРАМ
		// Функция, производящая непосредственное формирование документов.
		//
		// Параметры
		//  Настройка     - ссылка на настройку
		//	ДатаНачала	  - дата начала выборки документов;
		//	ДатаОкончания - дата окончания выборки документов;
		//  Ошибка        - в параметр будет возвращен текст ошибки (если формирование документов завершится с ошибкой)
		//	СформированныеДокументы	- в параметр будет возвращен массив сформированных документов;
		//	УчтенныеДокументы		- в параметр будет возвращен массив учтенных документов (т.е. тех, по данным которых сформированы документы).
		//
		// Возвращаемое значение
		//  Истина - сформировано без ошибок
		//  Ложь   - при формировании документов произошли ошибки
		//

		public object РегламентФормированияДокументовПоОрдерам_СформироватьДокументы(/*Настройка, ДатаНачала, ДатаОкончания, 
	    Ошибка = "", СформированныеДокументы = Неопределено, УчтенныеДокументы = Неопределено*/)
		{
			/*//На основании указанных в настройке параметров будут созданы документы "ПТиУ" или "РТиУ".
*/
			//СформированныеДокументы	=	Новый Массив;
			//УчтенныеДокументы		=	Новый Массив;
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
			/*//используется для всех запросов функции
*/
			/*//Получим перечень документов для обработки в соответствии с фильтрами
*/
			//Запрос = Новый Запрос();
			/*//Определим аргумент функции КонецПериода в зависимости от периодичности
*/
			//ОписаниеПериодаДетализации = Строка(Настройка.ПериодДетализации);
			/*//Получим список обрабатываемых ордеров в соответствии с отбором в настройке и поместим его в массив
*/
			//СхемаКомпоновкиДанных 				= Справочники.НастройкиФормированияДокументовПоОрдерам.ПолучитьМакет("Настройка");
			//КомпоновщикМакетаКомпоновкиДанных 	= Новый КомпоновщикМакетаКомпоновкиДанных;
			//МакетКомпоновкиДанных 				= КомпоновщикМакетаКомпоновкиДанных.Выполнить(СхемаКомпоновкиДанных, Настройка.НастройкиКомпоновщика.Получить());
			//Запрос 								= Новый Запрос(МакетКомпоновкиДанных.НаборыДанных.СписокОрдеров.Запрос);
			//ОписаниеПараметровЗапроса = Запрос.НайтиПараметры();
			//Запрос.УстановитьПараметр("ДатаНачала", 	ДатаНачала);
			//Запрос.УстановитьПараметр("ДатаОкончания", 	КонецДня(ДатаОкончания));
			if(true/*ТаблицаОрдеров.Количество() = 0*/)
			{
				//Ошибка = "Не обнаружены данные для обработки";
			}
			/*//Запрос обрабатывает данные ордеров для создания документов ПТиУ или РТиУ
*/
			//Запрос = Новый Запрос();
			//Запрос.УстановитьПараметр("ТаблицаОрдеров", ТаблицаОрдеров);
			//Запрос.УстановитьПараметр("ГраницаНачала", 		ДатаНачала);
			//Запрос.УстановитьПараметр("ГраницаОкончания", 	КонецДня(ДатаОкончания));
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*//	Порядок запросов в пакете важен, так как потом выполняем его методом ВыполнитьПакет()
*/
			/*Запрос.Текст = "
	|ВЫБРАТЬ *
	|ПОМЕСТИТЬ ВременнаяТаблицаОрдеров
	|ИЗ 
	|	&ТаблицаОрдеров КАК ТаблицаОрдеров
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВременнаяТаблицаОрдеров.СкладскойОрдер.Ссылка КАК Ссылка,
	|	ВременнаяТаблицаОрдеров.СкладскойОрдер.Организация КАК Организация,
	|	ВременнаяТаблицаОрдеров.СкладскойОрдер.Склад КАК Склад,
	|	ВременнаяТаблицаОрдеров.СкладскойОрдер.Контрагент КАК Контрагент,
	|	НАЧАЛОПЕРИОДА(ВЫБОР
	|			КОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
	|				ТОГДА &ГраницаОкончания
	|			КОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, МЕСЯЦ)
	|				ТОГДА КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, МЕСЯЦ)
	|			ИНАЧЕ КОНЕЦПЕРИОДА(ВременнаяТаблицаОрдеров.СкладскойОрдер.Дата, "+ОписаниеПериодаДетализации+")
	|		КОНЕЦ, ДЕНЬ) КАК Дата,
	|	ВЫБОР 
	|		КОГДА ВременнаяТаблицаОрдеров.СкладскойОрдер ССЫЛКА Документ.ПриходныйОрдерНаТовары ТОГДА
	|			ВременнаяТаблицаОрдеров.СкладскойОрдер.ЗаказПоставщику
	|		КОГДА ВременнаяТаблицаОрдеров.СкладскойОрдер ССЫЛКА Документ.РасходныйОрдерНаТовары 
	|			И ВременнаяТаблицаОрдеров.СкладскойОрдер.ДокументПередачи ССЫЛКА Документ.ЗаказПокупателя ТОГДА
	|			ВременнаяТаблицаОрдеров.СкладскойОрдер.ДокументПередачи
	|		ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка) 
	|	КОНЕЦ КАК Заказ
	|ПОМЕСТИТЬ ДокументыИсточники
	|ИЗ
	|	ВременнаяТаблицаОрдеров КАК ВременнаяТаблицаОрдеров
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка,
	|	Дата
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДокументыИсточники.Ссылка 	КАК Документ,
	|	ДокументыИсточники.Дата 	КАК Дата
	|ИЗ
	|	ДокументыИсточники КАК ДокументыИсточники
	|УПОРЯДОЧИТЬ ПО Дата
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДокументыИсточники.Дата 							КАК Дата,
	|	ДокументыИсточники.Организация 						КАК Организация,
	|	ДокументыИсточники.Склад 							КАК Склад,
	|	ДокументыИсточники.Контрагент 						КАК Контрагент,
	|	ДокументыИсточники.Заказ 							КАК Заказ
	|	
	|ИЗ
	|	ДокументыИсточники КАК ДокументыИсточники
	|УПОРЯДОЧИТЬ ПО Дата
	|;";*/
			/*//Третий запрос пакета содержит выборку документов-источников заполнения
*/
			/*//Запоминаем документы, на основании которых проводим заполнение.
*/
			//УчтенныеДокументы = РезультатыЗапросов[2].Выгрузить().ВыгрузитьКолонку("Документ");
			/*//Четвертый запрос пакета содержит выборку по ключевым полям создаваемых документов
*/
			//ВыборкаКлючейДокументов = РезультатыЗапросов[3].Выбрать();
			/*//Получим не зависящие от результатов запросов данные
*/
			//ОсновнойОтветственный 			= УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный");
			//мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");
			//ВидДокумента 					= Настройка.ВидРегулярногоДокумента;
			//МетаданныеДокумента 			= Метаданные.Документы[ВидДокумента];
			//ШаблонДокумента 				= Настройка.ШаблонРегулярногоДокумента;
			if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
			{
				//СтруктураПараметровДляПолученияДоговора = ЗаполнениеДокументов.ПолучитьСтруктуруПараметровДляПолученияДоговораПокупки();
			}
			/*// Структура реквизитов для заполнения цен.
*/
			//СтруктураРеквизитовДокументаДляЦенообразования = Новый Структура;
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("ТипЦен");
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("ВалютаДокумента");
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("КурсВзаиморасчетов");
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("КратностьВзаиморасчетов");
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("УчитыватьНДС");
			//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("СуммаВключаетНДС");
			if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
			{
				//СтруктураРеквизитовДокументаДляЦенообразования.Вставить("НДСВключенВСтоимость");
				//СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов;
				//ИмяРегистраЦен 		= "ЗаказыПоставщикам";
				//ИмяИзмеренияОтбора 	= "ЗаказПоставщику";
			}
			/*//Подготовим пакет запросов для получения данных о номенклатуре указанной в ордерах
*/
			/*//Данные для заполнения формируемых документов выбираются запросом с индексом [2]
*/
			//ЗапросТовары = Новый Запрос();
			//ЗапросТовары.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*ЗапросТовары.Текст = 
	"ВЫБРАТЬ
	|	ОстаткиЗаказов.Номенклатура,
	|	ОстаткиЗаказов.ХарактеристикаНоменклатуры,
	|	МИНИМУМ(ВЫРАЗИТЬ(ОстаткиЗаказов.Цена * ОстаткиЗаказов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЕСТЬNULL(ОстаткиЗаказов.ЕдиницаИзмерения.Коэффициент, 1) КАК ЧИСЛО(15, 2))) КАК Цена
	|ПОМЕСТИТЬ ВТЦеныНоменклатуры
	|ИЗ
	|	РегистрНакопления." + ИмяРегистраЦен + ".Остатки(, " + ИмяИзмеренияОтбора + " = &Заказ) КАК ОстаткиЗаказов
	|
	|СГРУППИРОВАТЬ ПО
	|	ОстаткиЗаказов.Номенклатура,
	|	ОстаткиЗаказов.ХарактеристикаНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПриходныйОрдерТовары.Номенклатура КАК Номенклатура,
	|	ПриходныйОрдерТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	ПриходныйОрдерТовары.СерияНоменклатуры КАК СерияНоменклатуры,
	|	ПриходныйОрдерТовары.Коэффициент КАК Коэффициент,
	|	ПриходныйОрдерТовары.Количество КАК Количество
	|ПОМЕСТИТЬ ВТНоменклатураОрдеров
	|ИЗ
	|	Документ.ПриходныйОрдерНаТовары.Товары КАК ПриходныйОрдерТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
	|		ПО ПриходныйОрдерТовары.Ссылка = ДокументыИсточники.Ссылка
	|ГДЕ
	|	ДокументыИсточники.Дата = &Дата
	|	И ДокументыИсточники.Склад = &Склад
	|	И ДокументыИсточники.Организация = &Организация
	|	И ДокументыИсточники.Контрагент = &Контрагент
	|	И ДокументыИсточники.Заказ = &Заказ
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	РасходныйОрдерТовары.Номенклатура,
	|	РасходныйОрдерТовары.ХарактеристикаНоменклатуры,
	|	РасходныйОрдерТовары.СерияНоменклатуры,
	|	РасходныйОрдерТовары.Коэффициент,
	|	РасходныйОрдерТовары.Количество
	|ИЗ
	|	Документ.РасходныйОрдерНаТовары.Товары КАК РасходныйОрдерТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыИсточники КАК ДокументыИсточники
	|		ПО РасходныйОрдерТовары.Ссылка = ДокументыИсточники.Ссылка
	|ГДЕ
	|	ДокументыИсточники.Дата = &Дата
	|	И ДокументыИсточники.Склад = &Склад
	|	И ДокументыИсточники.Организация = &Организация
	|	И ДокументыИсточники.Контрагент = &Контрагент
	|	И ДокументыИсточники.Заказ = &Заказ
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТНоменклатураОрдеров.Номенклатура,
	|	ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры,
	|	ВТНоменклатураОрдеров.СерияНоменклатуры,
	|	ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
	|	ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
	|	ВТНоменклатураОрдеров.Номенклатура.СтавкаНДС КАК СтавкаНДС,
	|	ЕСТЬNULL(ВТЦеныНоменклатуры.Цена, 0) КАК Цена,
	|	СУММА(ВТНоменклатураОрдеров.Количество * ВТНоменклатураОрдеров.Коэффициент / ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Количество
	|ИЗ
	|	ВТНоменклатураОрдеров КАК ВТНоменклатураОрдеров
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныНоменклатуры КАК ВТЦеныНоменклатуры
	|		ПО ВТНоменклатураОрдеров.Номенклатура = ВТЦеныНоменклатуры.Номенклатура
	|			И ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры = ВТЦеныНоменклатуры.ХарактеристикаНоменклатуры
	|
	|СГРУППИРОВАТЬ ПО
	|	ВТНоменклатураОрдеров.СерияНоменклатуры,
	|	ВТНоменклатураОрдеров.ХарактеристикаНоменклатуры,
	|	ВТНоменклатураОрдеров.Номенклатура,
	|	ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков,
	|	ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
	|	ВТНоменклатураОрдеров.Номенклатура.СтавкаНДС,
	|	ЕСТЬNULL(ВТЦеныНоменклатуры.Цена, 0)
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВТНоменклатураОрдеров.Количество * ВТНоменклатураОрдеров.Коэффициент / ВТНоменклатураОрдеров.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) > 0
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ВТЦеныНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ВТНоменклатураОрдеров";*/
			/*//Если документов больше двух, то покажем индикатор процесса
*/
			if(true/*ВыборкаКлючейДокументов.Количество()>2*/)
			{
				//ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
				//ФормаИндикатора.МаксимальноеЗначение		= ВыборкаКлючейДокументов.Количество();
				//ФормаИндикатора.КомментарийОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.НаименованиеОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.Открыть();
			}
			while(true/*ВыборкаКлючейДокументов.Следующий()*/)
			{
				/*//Получим исходные данные для заполнения документа.
*/
				/*//Параметрами запросов будут значения ключа формируемого документа.
*/
				//КлючДокумента = Новый Структура("Дата,Организация,Склад,Контрагент,Заказ");
				//ЗаполнитьЗначенияСвойств(КлючДокумента, ВыборкаКлючейДокументов);
				//ЗаполнитьЗначенияПараметровЗапроса(ЗапросТовары, КлючДокумента);
				//ДанныеТовары = ЗапросТовары.ВыполнитьПакет().Получить(2);
				/*//ДОКУМЕНТ "ПТиУ" / "РТиУ"
*/
				//НовыйДокумент = Документы[ВидДокумента].СоздатьДокумент();
				/*//По ключам документа заполняем реквизиты шапки
*/
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, КлючДокумента);
				/*//Если в настройке указан шаблон - реквизиты шапки возьмем из шаблона
*/
				if(true/*ЗначениеЗаполнено(ШаблонДокумента)*/)
				{
				}
				/*//Признаки отражения в учете берем из настройки
*/
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, Настройка, "ОтражатьВУправленческомУчете,ОтражатьВБухгалтерскомУчете,ОтражатьВНалоговомУчете");
				//НовыйДокумент.Дата = КлючДокумента.Дата;
				if(true/*ЗначениеЗаполнено(КлючДокумента.Заказ) И НЕ ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
				{
					//НовыйДокумент.Сделка = КлючДокумента.Заказ;
				}
				//НовыйДокумент.Ответственный = ОсновнойОтветственный;
				//НовыйДокумент.Комментарий	= "Заполнено по ордерам";
				/*//Заполняем реквизиты, специфические для вида документа
*/
				if(true/*ВидДокумента = "ПоступлениеТоваровУслуг"*/)
				{
					//НовыйДокумент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад;
					//НовыйДокумент.СкладОрдер 	 = КлючДокумента.Склад;
					//НовыйДокумент.ВидОперации 	 = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
				}
				/*//Заполняем реквизиты шапки, зависимые от других реквизитов
*/
				if(true/*ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
				{
					//ЗаполнитьЗначенияСвойств(НовыйДокумент, НовыйДокумент.Сделка, "Контрагент, ДоговорКонтрагента, ВалютаДокумента, ТипЦен, Организация, УчитыватьНДС, СуммаВключаетНДС");
				}
				if(true/*ЗначениеЗаполнено(НовыйДокумент.ДоговорКонтрагента)*/)
				{
					if(true/*НЕ ЗначениеЗаполнено(НовыйДокумент.ВалютаДокумента)*/)
					{
						//НовыйДокумент.ВалютаДокумента = НовыйДокумент.ДоговорКонтрагента.ВалютаВзаиморасчетов;
					}
					//СтруктураКурсаВзаиморасчетов 			= МодульВалютногоУчета.ПолучитьКурсВалюты(НовыйДокумент.ДоговорКонтрагента.ВалютаВзаиморасчетов, НовыйДокумент.Дата);
					//НовыйДокумент.КурсВзаиморасчетов 		= СтруктураКурсаВзаиморасчетов.Курс;
					//НовыйДокумент.КратностьВзаиморасчетов 	= СтруктураКурсаВзаиморасчетов.Кратность;
				}
				//НовыйДокумент.Товары.Загрузить(ДанныеТовары.Выгрузить());
				/*//Заполнение цен
*/
				if(true/*ЗначениеЗаполнено(НовыйДокумент.Сделка)*/)
				{
					/*//Цены в табличной части заполняются по заказу. Необходимо рассчитать сумму и сумму НДС
*/
				}
				if(true/*НовыйДокумент.ОтражатьВБухгалтерскомУчете*/)
				{
					/*//счета учета номенклатуры в ТЧ
*/
					//НовыйДокумент.ЗаполнитьСчетаУчетаВТабЧасти(НовыйДокумент.Товары, "Товары", НовыйДокумент.ОтражатьВБухгалтерскомУчете, НовыйДокумент.ОтражатьВНалоговомУчете);
					/*//счета в шапке
*/
					//ЗаполнитьЗначенияСвойств(НовыйДокумент, НовыйДокумент.ЗаполнитьСтруктуруСчетовУчетаШапки(НовыйДокумент.ОтражатьВБухгалтерскомУчете, НовыйДокумент.ОтражатьВНалоговомУчете));
				}
				/*//Сохраняем документ
*/
				//Сообщение = "Ошибка при записи документа " + НовыйДокумент.Метаданные().Синоним + ": ";
				/*//Запоминаем созданный документ
*/
				//СформированныеДокументы.Добавить(НовыйДокумент.Ссылка);
				/*//Обновим индикатор выполнения
*/
				if(true/*ФормаИндикатора <> Неопределено*/)
				{
					//ФормаИндикатора.КомментарийЗначения = "" + НовыйДокумент.Ссылка;
					//ФормаИндикатора.Значение 			= ФормаИндикатора.Значение + 1;
					//ОбработкаПрерыванияПользователя();
				}
			}
			if(true/*ФормаИндикатора <> Неопределено*/)
			{
				//ФормаИндикатора.Закрыть();
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// РЕГЛАМЕНТ ФОРМИРОВАНИЯ ДОКУМЕНТОВ УЧЕТА ОТРАБОТАННОГО ВРЕМЕНИ
		// Функция, производящая непосредственное формирование документов.
		//
		// Параметры
		//  Настройка     - ссылка на настройку
		//	ДатаНачала	  - дата начала выборки документов;
		//	ДатаОкончания - дата окончания выборки документов;
		//  Ошибка        - в параметр будет возвращен текст ошибки (если формирование документов завершится с ошибкой)
		//	СформированныеДокументы	- в параметр будет возвращен массив сформированных документов;
		//	УчтенныеДокументы		- в параметр будет возвращен массив учтенных документов (т.е. тех, по данным которых сформированы документы).
		//
		// Возвращаемое значение
		//  Истина - сформировано без ошибок
		//  Ложь   - при формировании документов произошли ошибки
		//

		public object РегламентФормированияДокументовОтработанногоВремени_СформироватьДокументы(/*Настройка, ДатаНачала, ДатаОкончания,
	    Ошибка = "", СформированныеДокументы = Неопределено, УчтенныеДокументы = Неопределено*/)
		{
			//СформированныеДокументы	=	Новый Массив;
			//УчтенныеДокументы		=	Новый Массив;
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
			/*//используется для всех запросов функции
*/
			/*//Получим перечень документов для обработки в соответствии с фильтрами
*/
			//Запрос = Новый Запрос();
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*//Определим аргумент функции КонецПериода в зависимости от периодичности
*/
			//ОписаниеПериодаДетализации = Строка(Настройка.ПериодДетализации);
			/*//	Порядок запросов в пакете важен, так как потом выполняем его методом ВыполнитьПакет()
*/
			/*Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	СотрудникиОрганизаций.Ссылка КАК Сотрудник
	|ПОМЕСТИТЬ ВТВсеСотрудникиЗаПериод
	|ИЗ
	|	Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
	|ГДЕ
	|	(СотрудникиОрганизаций.ДатаУвольнения > &ГраницаОкончания
	|			ИЛИ СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
	|	И СотрудникиОрганизаций.Физлицо В
	|			(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|				ОтчетОСоставеСменыСоставСмены.Сотрудник
	|			ИЗ
	|				Документ.ОтчетОСоставеСмены.СоставСмены КАК ОтчетОСоставеСменыСоставСмены
	|			ГДЕ
	|				ОтчетОСоставеСменыСоставСмены.Ссылка.Дата МЕЖДУ &ГраницаНачала И &ГраницаОкончания
	|				И НЕ ОтчетОСоставеСменыСоставСмены.Ссылка.ПометкаУдаления)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо КАК Физлицо,
	|	РаботникиОрганизацийСрезПоследних.Сотрудник,
	|	ВЫБОР
	|		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ГраницаОкончания
	|				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|			ТОГДА РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделениеЗавершения
	|		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ОбособленноеПодразделение
	|	КОНЕЦ КАК Организация,
	|	ВЫБОР
	|		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ГраницаОкончания
	|				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|			ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
	|		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
	|	КОНЕЦ КАК ПодразделениеОрганизации,
	|	ВЫБОР
	|		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ГраницаОкончания
	|				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|			ТОГДА РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавокЗавершения
	|		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок
	|	КОНЕЦ КАК ЗанимаемыхСтавок,
	|	ВЫБОР
	|		КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ГраницаОкончания
	|				И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|			ТОГДА РаботникиОрганизацийСрезПоследних.ГрафикРаботыЗавершения
	|		ИНАЧЕ РаботникиОрганизацийСрезПоследних.ГрафикРаботы
	|	КОНЕЦ КАК ГрафикРаботы
	|ПОМЕСТИТЬ ВТВсеСотрудникиОрганизации
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(
	|			&ГраницаОкончания,
	|           Сотрудник В 
	|					(ВЫБРАТЬ
	|						ВТВсеСотрудникиЗаПериод.Сотрудник
	|					ИЗ
	|						ВТВсеСотрудникиЗаПериод КАК ВТВсеСотрудникиЗаПериод)
	|				И ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
	|				И (ВЫБОР
	|						КОГДА ПериодЗавершения <= &ГраницаОкончания
	|								И ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|							ТОГДА ОбособленноеПодразделениеЗавершения
	|						ИНАЧЕ ОбособленноеПодразделение
	|					КОНЕЦ = &Организация
	|					ИЛИ &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
	|				И (ВЫБОР
	|						КОГДА ПериодЗавершения <= &ГраницаОкончания
	|								И ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|							ТОГДА ПодразделениеОрганизацииЗавершения
	|						ИНАЧЕ ПодразделениеОрганизации
	|					КОНЕЦ = &ПодразделениеОрганизации
	|					ИЛИ &ПодразделениеОрганизации = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))) КАК РаботникиОрганизацийСрезПоследних
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ОтчетОСоставеСмены.Ссылка КАК Ссылка,
	|	НАЧАЛОПЕРИОДА(ВЫБОР
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
	|				ТОГДА &ГраницаОкончания
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ОтчетОСоставеСмены.Ссылка.Дата, МЕСЯЦ)
	|				ТОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСмены.Ссылка.Дата, МЕСЯЦ)
	|			ИНАЧЕ КОНЕЦПЕРИОДА(ОтчетОСоставеСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+")
	|		КОНЕЦ, ДЕНЬ) КАК Период,
	|	ОтчетОСоставеСмены.Ссылка.ГраницаСмены КАК ГраницаСмены
	|ПОМЕСТИТЬ ВТДокументыИсточники
	|ИЗ
	|	Документ.ОтчетОСоставеСмены.СоставСмены КАК ОтчетОСоставеСмены
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации
	|		ПО ОтчетОСоставеСмены.Сотрудник = ВсеСотрудникиОрганизации.Физлицо
	|ГДЕ
	|	ОтчетОСоставеСмены.Ссылка.Дата МЕЖДУ &ГраницаНачала И &ГраницаОкончания
	|	И (НЕ ОтчетОСоставеСмены.Ссылка.ПометкаУдаления)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка,
	|	Период
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ОтчетОСоставеСменыСоставСмены.Сотрудник КАК ФизЛицо,
	|	ОтчетОСоставеСменыСоставСмены.ОтработанноеВремя КАК Часы,
	|	НАЧАЛОПЕРИОДА(ВЫБОР
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСменыСоставСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
	|				ТОГДА &ГраницаОкончания
	|			КОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСменыСоставСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ОтчетОСоставеСменыСоставСмены.Ссылка.Дата, МЕСЯЦ)
	|				ТОГДА КОНЕЦПЕРИОДА(ОтчетОСоставеСменыСоставСмены.Ссылка.Дата, МЕСЯЦ)
	|			ИНАЧЕ КОНЕЦПЕРИОДА(ОтчетОСоставеСменыСоставСмены.Ссылка.Дата, "+ОписаниеПериодаДетализации+")
	|		КОНЕЦ, ДЕНЬ) КАК Период,
	|	ОтчетОСоставеСменыСоставСмены.Ссылка.Дата КАК Дата,
	|	ВсеФизЛица.ГрафикРаботы КАК ГрафикРаботы
	|ПОМЕСТИТЬ ВТОтработанноеВремя
	|ИЗ
	|	Документ.ОтчетОСоставеСмены.СоставСмены КАК ОтчетОСоставеСменыСоставСмены
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДокументыИсточники КАК ДокументыИсточники
	|		ПО ОтчетОСоставеСменыСоставСмены.Ссылка = ДокументыИсточники.Ссылка
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
	|			ВсеСотрудникиОрганизации.Физлицо КАК Физлицо,
	|			ВсеСотрудникиОрганизации.ГрафикРаботы КАК ГрафикРаботы
	|		ИЗ
	|			ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации) КАК ВсеФизЛица
	|		ПО ОтчетОСоставеСменыСоставСмены.Сотрудник = ВсеФизЛица.Физлицо
	|ГДЕ
	|	ОтчетОСоставеСменыСоставСмены.Явка
	|
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ГрафикиРаботыПоСменам.ГрафикРаботы,
	|	ГрафикиРаботыПоСменам.Дата,
	|	ГрафикиРаботыПоСменам.Часы,
	|	НАЧАЛОПЕРИОДА(ВЫБОР
	|			КОГДА КОНЕЦПЕРИОДА(ГрафикиРаботыПоСменам.Дата, "+ОписаниеПериодаДетализации+") > &ГраницаОкончания
	|				ТОГДА &ГраницаОкончания
	|			КОГДА КОНЕЦПЕРИОДА(ГрафикиРаботыПоСменам.Дата, "+ОписаниеПериодаДетализации+") > КОНЕЦПЕРИОДА(ГрафикиРаботыПоСменам.Дата, МЕСЯЦ)
	|				ТОГДА КОНЕЦПЕРИОДА(ГрафикиРаботыПоСменам.Дата, МЕСЯЦ)
	|			ИНАЧЕ КОНЕЦПЕРИОДА(ГрафикиРаботыПоСменам.Дата, "+ОписаниеПериодаДетализации+")
	|		КОНЕЦ, ДЕНЬ) КАК Период
	|ПОМЕСТИТЬ ВТЧасовПоГрафику
	|ИЗ
	|	РегистрСведений.ГрафикиРаботыПоСменам КАК ГрафикиРаботыПоСменам
	|ГДЕ
	|	ГрафикиРаботыПоСменам.Дата МЕЖДУ &ГраницаНачала И &ГраницаОкончания
	|	И ГрафикиРаботыПоСменам.Часы > 0
	|   И ГрафикиРаботыПоСменам.ГрафикРаботы В (Выбрать Различные ВсеСотрудникиОрганизации.ГрафикРаботы ИЗ ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации)
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДокументыИсточники.Ссылка КАК Документ
	|ИЗ
	|	ВТДокументыИсточники КАК ДокументыИсточники
	|
	|УПОРЯДОЧИТЬ ПО
	|	Документ
	| ;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ВсеСотрудникиОрганизации.Организация,
	|	ДокументыИсточники.Период
	|ИЗ
	|	ВТДокументыИсточники КАК ДокументыИсточники,
	|	ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации
	|	
	|УПОРЯДОЧИТЬ ПО
	|	ДокументыИсточники.Период,
	|	ВсеСотрудникиОрганизации.Организация";*/
			/*//Значения отбора возьмем из шапки документа
*/
			//Отбор = Новый Структура("Организация, ПодразделениеОрганизации");
			//ЗаполнитьЗначенияСвойств(Отбор, Настройка);
			//ЗаполнитьЗначенияПараметровЗапроса(Запрос, Отбор);
			/*//Период берется из параметров
*/
			//Запрос.УстановитьПараметр("ГраницаНачала", 		ДатаНачала);
			//Запрос.УстановитьПараметр("ГраницаОкончания", 	КонецДня(ДатаОкончания));
			/*//Четвертый запрос пакета содержит выборку документов-источников заполнения
*/
			/*//Запоминаем документы, на основании которых проводим заполнение.
*/
			//УчтенныеДокументы = РезультатыЗапросов[5].Выгрузить().ВыгрузитьКолонку("Документ");
			/*//Пятый запрос пакета содержит выборку по ключевым полям создаваемых документов
*/
			//ВыборкаКлючейДокументов = РезультатыЗапросов[6].Выбрать();
			//ЗапросПоСотрудникам = Новый Запрос;
			//ЗапросПоСотрудникам.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			/*ТекстЗапроса = 
	"ВЫБРАТЬ
	|	СотрудникиПоОрганизации.Сотрудник,
	|	СотрудникиПоОрганизации.ЗанимаемыхСтавок,
	|	ДЕНЬ(ОтработанноеВремяЗаПериод.Дата) КАК НомерДня,
	|	ОтработанноеВремяЗаПериод.Часы КАК ОтработаноЧасов
	|ПОМЕСТИТЬ ВТДниФактические
	|ИЗ
	|	(ВЫБРАТЬ
	|		ОтработанноеВремя.Физлицо КАК Физлицо,
	|		ОтработанноеВремя.Дата КАК Дата,
	|		ОтработанноеВремя.ГрафикРаботы КАК ГрафикРаботы,
	|		ОтработанноеВремя.Часы КАК Часы
	|	ИЗ
	|		ВТОтработанноеВремя КАК ОтработанноеВремя
	|	ГДЕ
	|		ОтработанноеВремя.Период = &Период) КАК ОтработанноеВремяЗаПериод
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			ВсеСотрудникиОрганизации.Физлицо КАК Физлицо,
	|			ВсеСотрудникиОрганизации.Сотрудник КАК Сотрудник,
	|			ВсеСотрудникиОрганизации.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок
	|		ИЗ
	|			ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации
	|		ГДЕ
	|			ВсеСотрудникиОрганизации.Организация = &Организация) КАК СотрудникиПоОрганизации
	|		ПО ОтработанноеВремяЗаПериод.Физлицо = СотрудникиПоОрганизации.Физлицо
	|ГДЕ
	|	СотрудникиПоОрганизации.Сотрудник ЕСТЬ НЕ NULL 
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СотрудникиПоОрганизации.Сотрудник,
	|	СотрудникиПоОрганизации.ЗанимаемыхСтавок,
	|	ДЕНЬ(ПлановоеВремяЗаПериод.Дата) КАК НомерДня,
	|	ПлановоеВремяЗаПериод.Часы КАК ЧасовПоГрафику
	|ПОМЕСТИТЬ ВТДниПлановые
	|ИЗ
	|	(ВЫБРАТЬ
	|		ПлановоеВремя.ГрафикРаботы КАК ГрафикРаботы,
	|		ПлановоеВремя.Дата КАК Дата,
	|		ПлановоеВремя.Часы КАК Часы
	|	ИЗ
	|		ВТЧасовПоГрафику КАК ПлановоеВремя
	|	ГДЕ
	|		ПлановоеВремя.Период = &Период) КАК ПлановоеВремяЗаПериод
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			ВсеСотрудникиОрганизации.ГрафикРаботы КАК ГрафикРаботы,
	|			ВсеСотрудникиОрганизации.Физлицо КАК Физлицо,
	|			ВсеСотрудникиОрганизации.Сотрудник КАК Сотрудник,
	|			ВсеСотрудникиОрганизации.ЗанимаемыхСтавок КАК ЗанимаемыхСтавок
	|		ИЗ
	|			ВТВсеСотрудникиОрганизации КАК ВсеСотрудникиОрганизации
	|		ГДЕ
	|			ВсеСотрудникиОрганизации.Организация = &Организация) КАК СотрудникиПоОрганизации
	|		ПО ПлановоеВремяЗаПериод.ГрафикРаботы = СотрудникиПоОрганизации.ГрафикРаботы
	|ГДЕ
	|	СотрудникиПоОрганизации.Сотрудник ЕСТЬ НЕ NULL 
	|;";*/
			if(true/*(ОписаниеПериодаДетализации = "Месяц") и (Настройка.СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ВЦеломЗаПериод)*/)
			{
				/*ТекстЗапроса = ТекстЗапроса + "
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВложенныйЗапрос.Сотрудник 									КАК Сотрудник,
		|	ВложенныйЗапрос.ЗанимаемыхСтавок 							КАК ЗанимаемыхСтавок,
		|	СУММА(ВложенныйЗапрос.ОтработаноЧасов) 						КАК ОтработаноЧасов,
		|	СУММА(ВложенныйЗапрос.КоличествоОтработанныхДней) 			КАК КоличествоОтработанныхДней,
		|	СУММА(ВложенныйЗапрос.ЧасовПоГрафику) 						КАК ЧасовПоГрафику,
		|	СУММА(ВЫБОР
		|			КОГДА ВложенныйЗапрос.КоличествоДнейПоГрафику > ВложенныйЗапрос.КоличествоОтработанныхДней
		|				ТОГДА 1
		|			ИНАЧЕ 0
		|		КОНЕЦ) 													КАК КоличествоДнейНеявки
		|ИЗ
		|	(ВЫБРАТЬ
		|		ВложенныйЗапрос.НомерДня 							КАК НомерДня,
		|		ВложенныйЗапрос.Сотрудник 							КАК Сотрудник,
		|		ВложенныйЗапрос.ЗанимаемыхСтавок 					КАК ЗанимаемыхСтавок,
		|		СУММА(ВложенныйЗапрос.ОтработаноЧасов) 				КАК ОтработаноЧасов,
		|		СУММА(ВложенныйЗапрос.ЧасовПоГрафику) 				КАК ЧасовПоГрафику,
		|		СУММА(ВложенныйЗапрос.КоличествоДнейПоГрафику) 	  	КАК КоличествоДнейПоГрафику,
		|		СУММА(ВложенныйЗапрос.КоличествоОтработанныхДней) 	КАК КоличествоОтработанныхДней
		|	ИЗ
		|		(ВЫБРАТЬ
		|			ДниПлановые.НомерДня 			КАК НомерДня,
		|			ДниПлановые.Сотрудник 			КАК Сотрудник,
		|			ДниПлановые.ЗанимаемыхСтавок 	КАК ЗанимаемыхСтавок,
		|			0 								КАК ОтработаноЧасов,
		|			ДниПлановые.ЧасовПоГрафику 		КАК ЧасовПоГрафику,
		|			1 								КАК КоличествоДнейПоГрафику,
		|			0 								КАК КоличествоОтработанныхДней
		|		ИЗ
		|			ВТДниПлановые КАК ДниПлановые
		|		
		|		ОБЪЕДИНИТЬ ВСЕ
		|		
		|		ВЫБРАТЬ
		|			ДниФактические.НомерДня,
		|			ДниФактические.Сотрудник,
		|			ДниФактические.ЗанимаемыхСтавок,
		|			ДниФактические.ОтработаноЧасов,
		|			0,
		|			0,
		|			1
		|		ИЗ
		|			ВТДниФактические КАК ДниФактические) КАК ВложенныйЗапрос
		|	
		|	СГРУППИРОВАТЬ ПО
		|		ВложенныйЗапрос.НомерДня,
		|		ВложенныйЗапрос.Сотрудник,
		|		ВложенныйЗапрос.ЗанимаемыхСтавок) КАК ВложенныйЗапрос
		|
		|СГРУППИРОВАТЬ ПО
		|	ВложенныйЗапрос.Сотрудник,
		|	ВложенныйЗапрос.ЗанимаемыхСтавок
		|
		|УПОРЯДОЧИТЬ ПО
		|	ВложенныйЗапрос.Сотрудник
		|;";*/
			}
			/*ТекстЗапроса = ТекстЗапроса + "
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ВТДниПлановые
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|УНИЧТОЖИТЬ ВТДниФактические";*/
			//ЗапросПоСотрудникам.Текст = ТекстЗапроса;
			//Явка		= Справочники.КлассификаторИспользованияРабочегоВремени.Работа;
			//Выходной	= Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни;
			//Неявка		= Справочники.КлассификаторИспользованияРабочегоВремени.НеявкиПоНевыясненнымПричинам;
			while(true/*ВыборкаКлючейДокументов.Следующий()*/)
			{
				/*//Получим исходные данные для заполнения документа.
*/
				/*//Параметрами запросов будут значения ключа формируемого документа.
*/
				//КлючДокумента = Новый Структура("Период,Организация");
				//ЗаполнитьЗначенияСвойств(КлючДокумента, ВыборкаКлючейДокументов);
				//ЗаполнитьЗначенияПараметровЗапроса(ЗапросПоСотрудникам, КлючДокумента);
				//РезультатЗапроса = ЗапросПоСотрудникам.ВыполнитьПакет();
				if(true/*РезультатЗапроса[2].Пустой()*/)
				{
				}
				//НовыйДокумент = Документы.ТабельУчетаРабочегоВремениОрганизации.СоздатьДокумент();
				/*//Получим не зависящие от результатов запросов данные
*/
				/*ОсновнойОтветственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(
		глЗначениеПеременной("глТекущийПользователь"), 
		"ОсновнойОтветственный");*/
				//КонстантыДляЗаполнения = Новый Структура();
				//КонстантыДляЗаполнения.Вставить("Ответственный",			ОсновнойОтветственный);
				//КонстантыДляЗаполнения.Вставить("Комментарий",				"Заполнено данными по отчетам о составе смены");
				//КонстантыДляЗаполнения.Вставить("Дата",						ВыборкаКлючейДокументов.Период);
				//КонстантыДляЗаполнения.Вставить("ПериодРегистрации",		НачалоМесяца(ВыборкаКлючейДокументов.Период));
				if(true/*ОписаниеПериодаДетализации = "Месяц"*/)
				{
					//КонстантыДляЗаполнения.Вставить("СпособУказанияПериода",	Перечисления.ПериодНачисленияЗарплаты.ТекущийМесяц);
					//КонстантыДляЗаполнения.Вставить("ДатаНачалаПериода",		НачалоМесяца(ВыборкаКлючейДокументов.Период));
					//КонстантыДляЗаполнения.Вставить("ДатаОкончанияПериода",		КонецМесяца(ВыборкаКлючейДокументов.Период));
					//КонстантыДляЗаполнения.Вставить("СпособВводаДанных",		Настройка.СпособВводаДанных);
				}
				//КонстантыДляЗаполнения.Вставить("Организация",				ВыборкаКлючейДокументов.Организация);
				//КонстантыДляЗаполнения.Вставить("ПодразделениеОрганизации",	Настройка.ПодразделениеОрганизации);
				//ЗаполнитьЗначенияСвойств(НовыйДокумент, КонстантыДляЗаполнения);
				//ПредыдущийНомерДня = 0;
				//ПоследнийДеньМесяца	= День(КонецМесяца(ВыборкаКлючейДокументов.Период));
				if(true/*(ОписаниеПериодаДетализации = "Месяц") и (Настройка.СпособВводаДанных = Перечисления.СпособыВводаДанныхОВремени.ВЦеломЗаПериод)*/)
				{
					//СтрокаТЧКолонкиСводногоТабеля = НовыйДокумент.КолонкиСводногоТабеля.Добавить();
					//СтрокаТЧКолонкиСводногоТабеля.ВидВремени = Явка;
					//НеобходимоДополнитьНеявками = Ложь;
					//ТабличнаяЧастьТабеля = РезультатЗапроса[2].Выгрузить();
				}
				//Сообщение = "Ошибка при записи документа " + НовыйДокумент.Метаданные().Синоним + ": ";
				/*//Запоминаем созданный документ
*/
				//СформированныеДокументы.Добавить(НовыйДокумент.Ссылка);
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ОБЩИЕ ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С РЕГЛАМЕНТАМИ
		// Получает экземпляр регламента.
		// Под экземпляром регламента понимается нечто, определяющее логику и настройки
		// формирования документов.
		// Для реализованных способов формирования экземпляр регламента - ссылка на настройку
		// (логика формирования документов определяется типом справочника, а параметры - значениями его реквизитов).
		//
		// Метод предусмотрен для возможности расширения способов формирования документов.
		// Например, методы для формирования документов и получения параметров могут быть реализованы в виде внешней обработки.
		// В этом случае метод может возвращать объект внешней обработки.
		//
		// Сейчас в качестве экземпляра регламента всегда возвращается ссылка на переданную настройку.
		//
		// Параметры
		//  Настройка - ссылка на настройку
		//
		// Возвращаемое значение
		//  Экземпляр регламента

		public object ПолучитьЭкземплярРегламента(/*Настройка*/)
		{
			return null;
		}
		// Определяет дату начала периода, по которому должны формироваться документы по настройке.
		//
		// Параметры
		//	Настройка - ссылка на настройку
		//
		// Возвращаемое значение
		//	Дата

		public object ПолучитьДатуНачалаСледующегоПериодаФормированияДокументов(/*Настройка*/)
		{
			if(true/*Настройка.ГраницаОбработки = '0001-01-01'*/)
			{
			}
			return null;
		}
		// Определяет дату окончания следующего периода формирования документов
		//
		// Параметры
		//	Настройка 		- ссылка на настройку
		//
		// Возвращаемое значение
		//	Дата окончания периода

		public object ПолучитьДатуОкончанияПериодаФормированияДокументовПоРасписанию(/*Настройка*/)
		{
			if(true/*Настройка.НеОбрабатыватьВсеДокументы*/)
			{
				//Сутки = 24 * 60 * 60;
			}
			return null;
		}
		// ПолучитьДатуОкончанияПериодаФормированияДокументов()
		// Устанавливает новый период формирования документов.
		//
		// Параметры
		//  ОбъектНастройки - объект справочника, содержащий настройку формирования документов
		//  ГраницаОбработки - дата, на которую будет установлена граница формирования документов
		//  Ошибка - при возникновении ошибки в параметр будет возвращен текст сообщения об ошибке
		//
		// Возвращаемое значение
		//  Истина - выполнено успешно
		//  Ложь - ошибка при записи

		public object УстановитьПериодФормированияДокументов(/*ОбъектНастройки, ГраницаОбработки, Ошибка = ""*/)
		{
			//ОбъектНастройки.ГраницаОбработки = ГраницаОбработки;
			return null;
		}
		// Фиксирует результат выполнения регламентного задания РегламентноеФормированиеДокументов в журнале регистрации
		//
		// Параметры
		//  Настройка - настройка, по которой формируются документы
		//  Сообщение - текст сообщения
		//  Ошибка - выполнение завершилось ошибкой

		public void ЗаписатьРезультатРегламентногоФормированияДокументов(/*Настройка, Сообщение, Ошибка = Ложь*/)
		{
			/*ЗаписьЖурналаРегистрации(
	"Регламентное формирование документов", 
	?(Ошибка, УровеньЖурналаРегистрации.Ошибка, УровеньЖурналаРегистрации.Информация),
	Метаданные.РегламентныеЗадания.РегламентноеФормированиеДокументов,
	Настройка,
	Сообщение,
	?(ТранзакцияАктивна(), РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная, РежимТранзакцииЗаписиЖурналаРегистрации.Независимая));*/
		}
		// Метод регламентного задания РегламентноеФормированиеДокументов
		//
		// Параметры
		//  Настройка - ссылка на элемент справочника НастройкиФормированияДокументовВыпускаПродукции либо НастройкиФормированияДокументовПоОрдерам
		//
		// Функции работы с коллекциями представлений периодов
		// Добавляет элемент в коллекцию представлений
		//
		// Параметры
		//  Коллекция		- коллекция, в которую добавляется значение. Если Неопределено, то коллекция будет инициализирована
		//  Значение		- значение, добавляемое в коллекцию (для коллекций периодичности - значение перечисления Периодичность)
		//  Представление	- строка, представление добавляемого значения
		//  Порядок			- число для сравнения элементов коллекции (для коллекций периодичности - количество дней в периоде)

		public void ДобавитьЭлементКоллекцииПредставлений(/*Коллекция, Значение, Представление, Порядок*/)
		{
			if(true/*Коллекция = Неопределено*/)
			{
				//Коллекция = Новый ТаблицаЗначений;
				//Коллекция.Колонки.Добавить("Значение");
				//Коллекция.Колонки.Добавить("Представление");
				//Коллекция.Колонки.Добавить("Порядок");
			}
			//НоваяСтрока = Коллекция.Добавить();
			//НоваяСтрока.Значение 		= Значение;
			//НоваяСтрока.Представление 	= Представление;
			//НоваяСтрока.Порядок 		= Порядок;
		}
		// Получает значение из коллекции по представлению
		//
		// Параметры
		//  Коллекция     - коллекция, подготовленная с использованием ДобавитьЭлементКоллекцииПредставлений()
		//  Представление - строка, искомое представление
		//
		// Возвращаемое значение
		//  Значение элемента коллекции (для коллекций периодичности - значение перечисления Периодичность)

		public object ПолучитьЗначение(/*Коллекция, Представление*/)
		{
			//НайденнаяСтрока = Коллекция.Найти(Представление, "Представление");
			if(true/*НайденнаяСтрока = Неопределено*/)
			{
			}
			return null;
		}
		// Получает представление по значению
		//
		// Параметры
		//  Коллекция  - коллекция, подготовленная с использованием ДобавитьЭлементКоллекцииПредставлений()
		//  Значение   - искомое значение элемента коллекции (для коллекций периодичности - значение перечисления Периодичность)
		//
		// Возвращаемое значение
		//  Строка, представление значения

		public object ПолучитьПредставление(/*Коллекция, Значение*/)
		{
			//НайденнаяСтрока = Коллекция.Найти(Значение, "Значение");
			if(true/*НайденнаяСтрока = Неопределено*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// МЕТОДЫ ФОРМИРОВАНИЯ ЗАПРОСОВ
		// Заполняет значения параметров запроса ключами переданной структуры.
		//
		// Параметры
		//	Запрос 				- объект типа запрос
		//	СтруктураПараметров - структура с именами и значениями параметров

		public void ЗаполнитьЗначенияПараметровЗапроса(/*Запрос, СтруктураПараметров*/)
		{
		}
		////////////////////////////////////////////////////////////////////////////////
		// ОБЩИЕ МЕТОДЫ РАБОТЫ С ДОКУМЕНТАМИ
		// Получает типы переданных объектов
		//
		// Параметры
		//  МассивДокументов - массив объектов (ссылок на документы)
		//
		// Возвращаемое значение
		//  массив типов документов, переданных в качестве параметра.

		public object ПолучитьТипыДокументов(/*МассивДокументов*/)
		{
			/*//Получим список типов в массиве
*/
			//МассивТипов = Новый Массив;
			return null;
		}
		// Подготавливает список документов
		//	- либо сформированных, требующих проведения, но не проведенных.
		//	- либо учтенных, требующих удаления, но не помеченных на удаление
		// из списка переданных документов
		//
		// Параметры
		//
		//  Регламент - экземпляр регламента (возвращаемый функцией ПолучитьЭкземплярРегламента())
		//  МассивДокументов - массив со ссылками на документы
		//	Режим - строка "Проведение" или "Удаление"
		//
		// Возвращаемое значение
		//  Результат запроса

		public object ПолучитьРезультатЗапросаДокументов(/*Регламент, МассивДокументов, Режим*/)
		{
			//Режим = Врег(Режим);
			/*// Обрабатываем документы, указанные в табличной части
*/
			if(true/*Режим = "ПРОВЕДЕНИЕ"*/)
			{
				/*// Регламентом может быть предусмотрено, что не все документы нужно проводить.
*/
				//ОбрабатываемыеДокументы	= РегламентноеФормированиеДокументов.ПолучитьМассивДокументовДляПроведения(Регламент, МассивДокументов);
			}
			if(true/*ОбрабатываемыеДокументы.Количество() = 0*/)
			{
				/*// сформируем и вернем "фиктивный" запрос, т.к.
*/
				/*// использовать тот же самый способ,
*/
				/*// что и для случая, когда документы есть не получится 
*/
				/*// (потому что будет пустой состав типов)
*/
				//Запрос = Новый Запрос("ВЫБРАТЬ NULL КАК Документ, Ложь КАК Проведен, ДАТАВРЕМЯ(1,1,1) КАК Дата ГДЕ ЛОЖЬ");
			}
			/*// Для отбора документов по статусу (не проведенные, не помеченные на удаление) 
*/
			/*// выполним запрос, при этом соединение с таблицами документов будет выполняться неявно.
*/
			/*Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ИсходнаяТаблица.Документ
	|ПОМЕСТИТЬ ОтобранныеДокументы
	|ИЗ
	|	&ИсходнаяТаблица КАК ИсходнаяТаблица
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ОтобранныеДокументы.Документ,
	|	ОтобранныеДокументы.Документ.Проведен КАК Проведен,
	|	ОтобранныеДокументы.Документ.Дата КАК Дата,
	|	ПРЕДСТАВЛЕНИЕ(ОтобранныеДокументы.Документ) //Чтобы попало в кэш представлений
	|ИЗ
	|	ОтобранныеДокументы КАК ОтобранныеДокументы
	|ГДЕ НЕ ОтобранныеДокументы.Документ." + ?(Режим = "ПРОВЕДЕНИЕ", "Проведен", "ПометкаУдаления") + "
	|УПОРЯДОЧИТЬ ПО 
	|	Дата");*/
			/*// Получим таблицу со списком обрабатываемых документов, для передачи её в запрос
*/
			/*// Состав типов документа будет ограничен теми типами, значения которых фактически присутствуют в списке документов
*/
			/*// Для того, чтобы неявных соединений было не больше, чем нужно.
*/
			//МассивТипов = ПолучитьТипыДокументов(ОбрабатываемыеДокументы);
			//ИсходнаяТаблица	= Новый ТаблицаЗначений;
			//ИсходнаяТаблица.Колонки.Добавить("Документ", Новый ОписаниеТипов(МассивТипов));
			//Запрос.УстановитьПараметр("ИсходнаяТаблица", ИсходнаяТаблица);
			//Запрос.УстановитьПараметр("Режим", 			 Режим);
			return null;
		}
		// Удаляет учтенные документы.
		// Список документов, требующих удаления, уточняется у регламента.
		//
		// Параметры
		//  Регламент - экземпляр регламента (возвращаемый функцией ПолучитьЭкземплярРегламента())
		//  УчтенныеДокументы - Массив со списком учтенных документов
		//               или
		//               - таблица значений со списком учтенных документов.
		//                 Колонки:
		//		           Документ - ссылка на документ
		//		           Проведен - булево, в колонку будет установлен признак проведения документа до удаления
		//  Ошибка - в параметр будет вовращен текст ошибки (если операция будет прервана из-за ошибки)
		//  ОстанавливатьсяПриОшибках - булево, признак того что при обнаружении ошибок следует прервать обработку документов
		//  УдаленыДокументы - в него будет возвращено булево
		//			     - требуется ли логикой регламента удаление конкретных
		//			     учтенных документов
		// Возвращаемое значение
		//  Истина - все документы удалены без ошибок

		public object УдалитьУчтенныеДокументы(/*Регламент, УчтенныеДокументы, ОстанавливатьсяПриОшибках = Истина, Ошибка = "", УдаленыДокументы=Ложь*/)
		{
			if(true/*ТипЗнч(УчтенныеДокументы) = Тип("ТаблицаЗначений")*/)
			{
				//МассивДокументов = УчтенныеДокументы.ВыгрузитьКолонку("Документ");
			}
			//ДокументыДляУдаления	= ПолучитьРезультатЗапросаДокументов(Регламент, МассивДокументов, "Удаление").Выбрать();
			if(true/*ДокументыДляУдаления.Количество() = 0*/)
			{
				//УдаленыДокументы = Ложь;
			}
			//УдаленыДокументы 	= Истина;
			/*//В случае ошибок - вернем Ложь
*/
			//БезОшибок 			= Истина;
			/*//Если документов больше двух, то покажем индикатор процесса
*/
			if(true/*ДокументыДляУдаления.Количество()>2*/)
			{
				//ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
				//ФормаИндикатора.МаксимальноеЗначение		= ДокументыДляУдаления.Количество();
				//ФормаИндикатора.КомментарийОбработкиДанных	= "Удаление учтенных документов";
				//ФормаИндикатора.НаименованиеОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.Открыть();
			}
			/*//Удаление документов
*/
			while(true/*ДокументыДляУдаления.Следующий()*/)
			{
				/*//Запомним текущее состояние документа
*/
				if(true/*ТипЗнч(УчтенныеДокументы) = Тип("ТаблицаЗначений")*/)
				{
				}
				/*//Установим пометку удаления
*/
				//ПредставлениеУдаляемогоДокумента 	= "" + ДокументыДляУдаления.Документ;
				//Сообщение 							= "Ошибка при пометке на удаление документа " + ПредставлениеУдаляемогоДокумента + ": ";
				/*//Обновим индикатор выполнения
*/
				if(true/*ФормаИндикатора <> Неопределено*/)
				{
					//ФормаИндикатора.КомментарийЗначения	= ПредставлениеУдаляемогоДокумента;
					//ФормаИндикатора.Значение 			= ФормаИндикатора.Значение + 1;
					//ОбработкаПрерыванияПользователя();
				}
			}
			if(true/*ФормаИндикатора <> Неопределено*/)
			{
				//ФормаИндикатора.Закрыть();
			}
			return null;
		}
		// Функция проведения сформированных документов.
		// Список документов, требующих проведения, уточняется у регламента.
		//
		// Параметры
		//  Регламент - экземпляр регламента (возвращаемый функцией ПолучитьЭкземплярРегламента())
		//  МассивДокументов - массив со ссылками на документы
		//  ОстанавливатьсяПриОшибках - булево, признак того что при обнаружении ошибок следует прервать обработку документов
		//  Ошибка - в параметр будет вовращен текст ошибки (если операция будет прервана из-за ошибки)
		//  МассивНепроведенныхДокументов - массив, в который будут записаны документы которые не удалось провести
		// Возвращаемое значение
		//  Истина - все документы проведены.

		public object ПровестиСформированныеДокументы(/*Регламент, МассивДокументов, ОстанавливатьсяПриОшибках = Истина, Ошибка = "", МассивНепроведенныеДокументы = Неопределено*/)
		{
			//ДокументыДляПроведения	= ПолучитьРезультатЗапросаДокументов(Регламент, МассивДокументов, "Проведение").Выбрать();
			//МассивНепроведенныеДокументы = Новый Массив();
			/*//В случае ошибок - вернем Ложь, чтобы задача не могла считаться выполненной.
*/
			//БезОшибок = Истина;
			/*//Если документов больше двух, то покажем индикатор процесса
*/
			if(true/*ДокументыДляПроведения.Количество()>2*/)
			{
				//ФормаИндикатора = ПолучитьОбщуюФорму("ХодВыполненияОбработкиДанных");
				//ФормаИндикатора.МаксимальноеЗначение		= ДокументыДляПроведения.Количество();
				//ФормаИндикатора.КомментарийОбработкиДанных	= "Проведение документов";
				//ФормаИндикатора.НаименованиеОбработкиДанных	= "Формирование документов";
				//ФормаИндикатора.Открыть();
			}
			while(true/*(НЕ ОстанавливатьсяПриОшибках ИЛИ БезОшибок ИЛИ НЕ ТранзакцияАктивна()) И ДокументыДляПроведения.Следующий()*/)
			{
				/*//внутри транзакции после первой ошибки прекращаем выполнение
*/
				//ПредставлениеПроводимогоДокумента 	= ""+ДокументыДляПроведения.Документ;
				//Сообщение 							= "Ошибка при проведении документа " + ПредставлениеПроводимогоДокумента + ": ";
				/*//Обновим индикатор выполнения
*/
				if(true/*ФормаИндикатора <> Неопределено*/)
				{
					//ФормаИндикатора.КомментарийЗначения	= ПредставлениеПроводимогоДокумента;
					//ФормаИндикатора.Значение 			= ФормаИндикатора.Значение + 1;
					//ОбработкаПрерыванияПользователя();
				}
			}
			if(true/*ФормаИндикатора <> Неопределено*/)
			{
				//ФормаИндикатора.Закрыть();
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// РАСШИРЯЕМЫЕ ФУНКЦИИ РЕГЛАМЕНТОВ
		// Определяет дату окончания следующего периода формирования документов
		//
		// Параметры
		//  Регламент    - экземпляр регламента (возвращаемый функцией ПолучитьЭкземплярРегламента())
		//  ДатаНачалаПериода - дата начала периода,
		//                      которая может быть использована для расчета даты окончания.
		//                      Может быть получена функцией
		//                      ПолучитьДатуНачалаСледующегоПериодаФормированияДокументов()
		//
		// Возвращаемое значение
		//  Дата. Если не удалось определить дату окончания периода, то будет возвращена пустая дата.
		//

		public object ПолучитьДатуОкончанияПериодаФормированияДокументов(/*Регламент, ДатаНачалаПериода*/)
		{
			if(true/*ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовВыпускаПродукции")
		ИЛИ ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовПоОрдерам")
		ИЛИ ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовОтработанногоВремени")*/)
			{
			}
			return null;
		}
		// Выполняет создание, заполнение и запись документов
		//
		// Параметры
		//  Регламент    - экземпляр регламента (возвращаемый функцией ПолучитьЭкземплярРегламента())
		//	ДатаНачала   - дата начала выборки документов
		//	ДатаОкончания- дата окончания выборки документов
		//  Ошибка       - в параметр будет возвращен текст ошибки (если формирование документов завершится с ошибкой)
		//	СформированныеДокументы - в параметр будет возвращен массив сформированных документов
		//	УчтенныеДокументы       - в параметр будет возвращен массив учтенных документов (т.е. тех, по данным которых сформированы документы).
		//
		// Возвращаемое значение
		//  Истина - сформировано без ошибок
		//  Ложь   - при формировании документов произошли ошибки
		//

		public object СформироватьДокументы(/*Регламент, ДатаНачала, ДатаОкончания, Ошибка = "", СформированныеДокументы=Неопределено, УчтенныеДокументы=Неопределено*/)
		{
			/*// Формируем документы
*/
			if(true/*ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовВыпускаПродукции")*/)
			{
			}
			return null;
		}
		// Возвращает массив документов, входящих в переданный массив сформированных по данному регламенту
		//документов (ПроверяемыеДокументы), которые требуют проведения в соответствии с логикой
		//отражения операций по данному регламенту.

		public object ПолучитьМассивДокументовДляПроведения(/*Регламент, ПроверяемыеДокументы*/)
		{
			if(true/*ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовВыпускаПродукции")*/)
			{
			}
			return null;
		}
		// Возвращает массив документов, входящих в переданный массив учтенных данным регламентом
		//документов (ПроверяемыеДокументы), которые требуют удаления в соответствии с логикой
		//отражения операций по данному регламенту.

		public object ПолучитьМассивДокументовДляУдаления(/*Регламент, ПроверяемыеДокументы*/)
		{
			if(true/*ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовВыпускаПродукции")*/)
			{
			}
			return null;
		}
		// Возвращает булево - признак того, что удалять учтенные документы необходимо в транзакции
		//

		public object УдалятьИПроводитьДокументыВТранзакции(/*Регламент*/)
		{
			if(true/*ТипЗнч(Регламент) = Тип("СправочникСсылка.НастройкиФормированияДокументовПоОрдерам")*/)
			{
			}
			return null;
		}
	}
}
